﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
namespace BOL
{
    [Serializable]
    public class ErrorWebBL
    {

       


        public  errorWebInfo getErrorWEB(string rut)
        {
            
            
           

            XmlDocument xDoc = new XmlDocument();
            //La ruta del documento XML permite rutas relativas 
            //respecto del ejecutable!
            xDoc.Load(rut);

            XmlNodeList RawUrl = xDoc.GetElementsByTagName("RawUrl");
            XmlNodeList ErrorPriority = xDoc.GetElementsByTagName("ErrorPriority");
            XmlNodeList WebApplicationName = xDoc.GetElementsByTagName("WebApplicationName");
            XmlNodeList WebHostName = xDoc.GetElementsByTagName("WebHostName");
            XmlNodeList Message = xDoc.GetElementsByTagName("Message");
            XmlNodeList Detail = xDoc.GetElementsByTagName("Detail");
            

            errorWebInfo obj = new errorWebInfo();
            obj.RawUrl = RawUrl[0].InnerText;
            obj.ErrorPriority = ErrorPriority[0].InnerText;
            obj.WebApplicationName = WebApplicationName[0].InnerText;
            obj.WebHostName = WebHostName[0].InnerText;
            obj.Message = Message[0].InnerText;
            obj.Detail = Detail[0].InnerText;

            return obj;

        }

        public List<errorWebItemInfo> getErrorWEBitem(string rut)
        {
            

            XmlDocument xDoc = new XmlDocument();
            //La ruta del documento XML permite rutas relativas 
            //respecto del ejecutable!
            xDoc.Load(rut); 
            XmlNodeList personas = xDoc.GetElementsByTagName("SqlErrors");
            XmlNodeList lista =     ((XmlElement)personas[0]).GetElementsByTagName("WebSqlError");
            List<errorWebItemInfo> list = new List<errorWebItemInfo>();
            
            foreach (XmlElement nodo in lista)
            {
                errorWebItemInfo item = new errorWebItemInfo();
                XmlNodeList nMenssage= nodo.GetElementsByTagName("Message");
                XmlNodeList nProcedure = nodo.GetElementsByTagName("Procedure");
                XmlNodeList nSeverity = nodo.GetElementsByTagName("Severity");
                XmlNodeList nLineNumber = nodo.GetElementsByTagName("LineNumber");
                XmlNodeList nNumber = nodo.GetElementsByTagName("Number");
                XmlNodeList nServer = nodo.GetElementsByTagName("Server");
                XmlNodeList nSource = nodo.GetElementsByTagName("Source");
                XmlNodeList nState = nodo.GetElementsByTagName("State");

                item.Message = nMenssage[0].InnerText;
                item.Procedure = nProcedure[0].InnerText;
                item.Severity = nSeverity[0].InnerText;
                item.LineNumber = nLineNumber[0].InnerText;
                item.Number = nNumber[0].InnerText;
                item.Server = nServer[0].InnerText;
                item.Source = nSource[0].InnerText;
                item.State = nState[0].InnerText;
                list.Add(item);
                //Console.WriteLine("Elemento nombre ... {0} {1} {2}",            
                //    nNombre[i].InnerText,                              
                //    nApellido1[i].InnerText,                             
                //    nApellido2[i++].InnerText);} 

                
               }
            return list;
           
            
        }




        //public List<archivoInfo> getErroresList(string ruta)
        //{

        //    //lista de errores 
        //    string ruta = Request.PhysicalApplicationPath + "App_Data\\WebErrors\\WebServerSideSqlError\\";

        //    string[] sArchivos = Directory.GetFiles(ruta);


        //    foreach (var archivo in sArchivos)
        //    {
        //        FileInfo archivoInfo = new FileInfo(archivo);

        //        nombre = archivoInfo.Name;
        //        tamanio = archivoInfo.Length.ToString("#,#");
        //        fecha = archivoInfo.CreationTime.ToShortDateString;

        //    }

        //}

    }

    public class errorWebInfo
    {
         public string RawUrl {get; set;}
        public string ErrorPriority {get; set;}
        public string WebApplicationName {get; set;}
        public string WebHostName {get; set;}
        public string Message {get; set;}
        public string Detail {get; set;}
    }

    public class errorWebItemInfo
    {
        public string Message { get; set; }
        public string Procedure { get; set; }
        public string Severity { get; set; }
        public string LineNumber { get; set; }
        public string Number { get; set; }
        public string Server { get; set; }
        public string Source { get; set; }
        public string State { get; set; }
    }
   
}
